package com.neu.yth.nepBackend.member.service;

import com.neu.yth.nepBackend.entity.Member;
import com.baomidou.mybatisplus.extension.service.IService;
import com.neu.yth.nepBackend.entity.PageInfo;
import com.neu.yth.nepBackend.utils.Result;

import java.util.List;

/**
 * <p>
 * 成员信息表（管理员、公众监督员、网格员） 服务类
 * </p>
 *
 * @author YTH
 * @since 2024-05-31
 */
public interface IMemberService extends IService<Member> {
    /**
     * 查询所有用户
     *
     * @return List<Member>
     */
    Result<List<Member>> selectAll();


    /**
     * 公众监督员登录
     *
     * @param logInID
     * @param logInPwd
     * @return
     */
    Result<Member> login(String logInID, String logInPwd);


    /**
     * 公众监督员注册
     *
     * @param member
     * @return
     */
    Result<Member> register(Member member);


    /**
     * 公众监督员登录验证码
     *
     * @param tel
     * @return
     */
    Result getCode(String tel);

    /**
     * 公众监督员验证码登录
     *
     * @param member
     * @return
     */
    Result loginCode(Member member);

    /**
     * 分页查询
     *
     * @param pageInfo
     * @return
     */
    Result selectPage(PageInfo pageInfo);

    /**
     * 更新
     *
     * @param member
     * @return
     */
    Result updateMember(Member member);

    /**
     * 删除
     *
     * @param memId
     * @return
     */
    Result deleteMember(String memId);


    /**
     * 查询网格员
     *
     * @return
     */
    Result<List<Member>> selectGrid();

    /**
     * 分页查询网格员
     *
     * @param pageInfo
     * @return
     */
    Result selectGridPage(PageInfo pageInfo);


    /**
     * 网格员分配
     *
     * @param memId
     * @return
     */
    Result updateAssign(Integer memId);


    /**
     * 根据id查询
     *
     * @param memId
     * @return
     */
    Result<Member> selectById(Integer memId);


    /**
     * 根据角色查询数量
     *
     * @param roleId
     * @return
     */
    Result selectCount(Integer roleId);

    /**
     * 网格员自动分配
     *
     * @param location
     * @return
     */
    Result selectAutoAssign(String location);
}
